from flask import Flask
from settings import dict_config
from flask_migrate import Migrate


def create_app(run_type):
    app = Flask(__name__)

    app.config.from_object(dict_config.get(run_type))

    from comment.modules import db
    db.init_app(app)

    from comment.utils.financial_redis import fr
    fr.init_app(app)

    from comment.utils.Financial_Logging import create_logger
    create_logger(app)

    # 初始化Migrate ,可以执行命令： flask db init， flask db migrate，flask db upgrade
    # 执行以上的三个命令，需要默认的Flask项目入口文件。当前项目没有默认的项目入口文件。需要设置环境变量：
    Migrate(app, db)

    from comment.utils.request_auth import jwt_request_auth
    app.before_request(jwt_request_auth)  # 注册钩子函数

    # 注册蓝图
    from financial.resources.user import user_bp
    app.register_blueprint(user_bp)
    # 发送短信蓝图
    from financial.resources.letter import letter_bp
    app.register_blueprint(letter_bp)
    # 注册银行卡相关蓝图
    from financial.resources.card import card_bp
    app.register_blueprint(card_bp)
    # 注册金融产品的蓝图
    from financial.resources.product import product_bp
    app.register_blueprint(product_bp)
    # 注册理财产品的蓝图
    from financial.resources.transaction import transaction_bp
    app.register_blueprint(transaction_bp)
    #注册账户资金的蓝图
    from financial.resources.account import account_bp
    app.register_blueprint(account_bp)

    return app
